package done.easy_401_500;

import com.study.common.Node;
import org.junit.Test;

import java.util.*;

import static com.study.util.LogUtil.info;

/**
 * 429. N-ary Tree Level Order Traversal N叉树的层序遍历
 * <p>
 * 给定一个 N 叉树，返回其节点值的层序遍历。 (即从左到右，逐层遍历)。
 * 例如，给定一个 3叉树:
 * <p>
 * 1
 * /   |   \
 * 3    2    4
 * /  \
 * 5    6
 * <p>
 * 返回其层序遍历:
 * <p>
 * [
 * [1],
 * [3,2,4],
 * [5,6]
 * ]
 *
 * @author 大硕
 * 2019-04-07 4:48 PM
 **/
@SuppressWarnings("all")
public class N_aryTreeLevelOrderTraversal {

    public List<List<Integer>> levelOrder(Node root) {
        // 190407 first
        List<List<Integer>> result = new ArrayList<>();
        return result;
    }

    @Test
    public void test() {
        Node root = new Node(1,
                new Node(3,
                        5, 6), new Node(2), new Node(4));
        info(levelOrder(root));
    }
}






























/*
public List<List<Integer>> levelOrder(Node root) {
    // 每层一个List
    List<List<Integer>> result = new ArrayList();

    dfs(result, root,0);

    return result;
}

public void dfs(List<List<Integer>> result, Node root, int level) {
    if (root == null)
        return;

    // 层深大于列表大小，为当前层初始化一个列表
    // 这个列表可以存储这一层的所有节点
    if (level >= result.size())
        result.add(new ArrayList());

    // 刚才初始化好的列表 把当前节点的值放进去
    result.get(level).add(root.val);

    if (root.children == null)
        return;

    // 遍历下一层所有节点
    for (Node node : root.children) {
        dfs(result, node, level + 1);
    }
}
*/
